# -*- coding: utf-8 -*-
"""
Auteurs: Eliott
"""
VERB = 0
ADJECTIVE = 1
NOUN = 2

""" Cette classe représente un mot-clé de l'analyse textuelle.
    Responsabilités:
        addLink(keyword)
        deleteLink(keyword)
    Collaborateurs:
        le type du mot-clé
        le nom du mot-clé
        les mots-clé associés """
class KeyWord(object):
    
    dependsOn = None
    
    def __init__(self, keyWord, type, linkedKeyWords = [], id = None):
        self.keyWord = keyWord
        self.type = type
        self.linkedKeyWords = linkedKeyWords
        print linkedKeyWords
        self.id = id
               
    def addLink(self,keyWord):
        self.linkedKeyWords.append(keyWord)
        if self not in keyWord.linkedKeyWords:
            keyWord.addLink(keyWord)
        
    def deleteLink(self,keyWord):
        if keyWord in self.linkedKeyWord:
            self.linkedKeyWords.remove(keyWord)
            if self in keyWord.linkedKeyWords:
                keyWord.deleteLink(self)
    
    def __str__(self):
        return self.keyWord

KeyWord.attrDefs = {"keyWord": str, "type": int, "linkedKeyWords": [KeyWord], "id": int}

""" Cette classe représente le mandat et l'analyse qui en est faite.
    Responsabilités: aucune, elle ne sert que de conteneur
    Collaborateurs:
        Le mandat
        Les mots-clé associés
"""
class TextualAnalysis(object):
    
    attrDefs = {"keyWords": [KeyWord], "text": str, "id": int}
    dependsOn = None

    def __init__(self, text = "", localKeyWords = [], ID = None, version = None):
        self.keyWords = localKeyWords
        self.text = text
        self.id = ID
        self.version = version

